﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using Taobao.Public;

namespace Taobao.Filter
{
    public class PermissionFilterAttribute : AuthorizeAttribute
    {

    //    protected override bool AuthorizeCore(HttpContextBase httpContext)
    //    {

    //        //1)没有登录 2）登录了但是没有访问权限
    //        if (!IsLogin())
    //            return false;

    //        return true;
    //    }
    //    /// <summary>
    //    /// 获取当前访问的地址
    //    /// </summary>
    //    /// <param name="filterContext">访问上下文</param>
    //    public override void OnAuthorization(System.Web.Mvc.AuthorizationContext filterContext)
    //    {
    //        string controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName,
    //         actionName = filterContext.ActionDescriptor.ActionName;
    //        //获取当前访问页  判断是否有权限
    //        base.OnAuthorization(filterContext);
    //    }
    //    /// <summary>
    //    /// 没有访问权限时 判断是访问前台页面还是后台页面 用于选择对应的登录页面
    //    /// </summary>
    //    /// <param name="filterContext"></param>
    //    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    //    {
    //        string controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
    //        //获取当前访问地址的相对路径
    //        string action = filterContext.ActionDescriptor.ActionName;
    //        string localPath = "/" + controllerName + "/" + action;
    //        if (localPath.ToLower() != ("/Login/Index").ToLower())
    //            HttpContext.Current.Session["localPath"] = localPath;
    //        if (controllerName.ToLower() == "Login")
    //        {
    //            filterContext.Result = new RedirectResult("/Login/Index");
    //        }
    //        else
    //        {
    //            filterContext.Result = new RedirectResult("/Login/Index");
    //            base.HandleUnauthorizedRequest(filterContext);
    //        }
    //    }

    //    protected bool IsLogin()
    //    {
    //        var item = HttpContext.Current.Request.Cookies[Constant.userInfo];
    //        if (item != null)
    //        {
    //            //var curUser=CustomClass.GetCahce(Constant.userInfo);
    //            //if(curUser!=null)
    //            //{
    //            //    var cuItem = (UseInfor)curUser;
    //            //    ViewBag.count = cuItem.TotalCount;
    //            //}
    //            //ViewBag.name = HttpUtility.UrlDecode(item.Values["name"], Encoding.GetEncoding("UTF-8"));
    //            //ViewBag.userId = item.Values["userId"];
    //            return true;
    //        }

    //        return false;
    //    }
    //}
    //public class CheckLogin : ActionFilterAttribute
    //{
    //    //在Action执行之前　 
    //    public override void OnActionExecuting(ActionExecutingContext filterContext)
    //    {  
    //        if(!IsLogin())
    //        {
    //            filterContext.Result = new RedirectResult("/Login/Index");
    //        }
    //        //HttpCookieCollection CookieCollect = System.Web.HttpContext.Current.Request.Cookies; if (CookieCollect["username"] == null || CookieCollect["password"] == null)
    //        //{
    //        //    filterContext.Result = new RedirectResult("/Home/Login");
    //        //}
    //        //else
    //        //{
    //        //    if (CookieCollect["username"].Value != "admin" && CookieCollect["password"].Value != "123456")
    //        //    {
    //        //        filterContext.Result = new RedirectResult("/Home/Login");
    //        //    }
    //        //}
    //    }
    //    protected bool IsLogin()
    //    {
    //        var item =HttpContext.Current.Request.Cookies[Constant.userInfo];
    //        if (item != null)
    //        {
    //            //var curUser=CustomClass.GetCahce(Constant.userInfo);
    //            //if(curUser!=null)
    //            //{
    //            //    var cuItem = (UseInfor)curUser;
    //            //    ViewBag.count = cuItem.TotalCount;
    //            //}
    //            //ViewBag.name = HttpUtility.UrlDecode(item.Values["name"], Encoding.GetEncoding("UTF-8"));
    //            //ViewBag.userId = item.Values["userId"];
    //            return true;
    //        }

    //        return false;
    //    }
    }
}